package com.open.base.model;


/**
 * 用户配置基础策略类
 * 遵循DDD原则，实体类承载业务逻辑
 *
 * @author 大树03
 * @date 2025-09-10
 */
public abstract class BaseUserConfig {

    /**
     * 获取用户配置
     * @param generalConfig 通用配置对象，如果为null则返回默认配置
     * @return 配置对象
     */
    public Object getUserConfig(GeneralConfig generalConfig) {
        if (generalConfig != null) {
            // 解析用户自定义配置
            return this.parseConfig(generalConfig.getConfig());
        }
        // 返回默认配置
        return this.getDefaultInstance();
    }

    /**
     * 获取配置类型
     * @return 配置类型标识
     */
    public abstract String getConfigType();

    /**
     * 解析配置JSON字符串
     * @param configJson 配置JSON字符串
     * @return 解析后的配置对象
     */
    protected abstract Object parseConfig(String configJson);

    /**
     * 获取默认实例
     * @return 默认配置实例
     */
    protected abstract Object getDefaultInstance();
}
